/**
 * desc: .
 * User : hjt
 * Date : 2017/1/2
 */

/*

 promise是Commonjs下的一个规范，规范的就是Js异步的操作方式而已.
 在实际的Javascript开发过中，我们会经常使用很多的异步开发，浏览器中的动画效果，服务器和桌面端
 的IO操作等，这些都是异步实现的。一个异步执行完毕以后可能会执行另外一个异步请求，就会牵涉到业务的嵌套
 和地狱回调的问题。如果解决这个地狱回调的问题可以通过Promise的方式解决。
 */

ajaxmethod(function(){
    ajaxmethod2(function(){
        ajaxmethod3(function(){

        })
    })
});

ajaxmethod(()=>{
    ajaxmethod2(()=>{
        ajaxmethod3(()=>{

        });
    });
});

    //Promise的写法如下
    ajaxMethod()
    .then(function(){
        ajaxMethod2()
    })
    .then(function(){
        ajaxMethod3()
    })
    .then(function(){
        ajaxMethod4()
    });

/*
*  Promise最大的目的在于可以让异步代码变得井然有序，让代码变得非常的感觉整洁。
*   比如Angularjs中的http(url).then().then()就应用了。
*   异步里面还有一个setTimeout。
*
*promise
*  1:状态 pending--->resolve(成功)/reject(拒绝)两种状态
*  2:then方法的调用 resolve和reject对象的回调函数
*
* */


function show(time){

    var promise = new Promise(function(resolve,reject){
        setTimeout(function(){
            console.log(time+"秒后执行");
            resolve();
        },time*1000);
    });

    return promise;
};


show(1).then(function(){
    console.log("操作1")
},function(){
    console.log("执行失败...")
});
/*
 show(1).then(function(){
 console.log("操作2")
 },function(){
 console.log("执行失败...")
 });

 show(1).then(function(){
 console.log("操作3")
 },function(){
 console.log("执行失败...")
 });*/